<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue系列课程</title>
</head>
<body>
<div id="app">
    <h1>{{msg}}</h1>
    <!--
        所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定：父级 prop 的更新会向下流动到子组件中，但是反过来则不行。这样会防止从子组件意外变更父级组件的状态，从而导致你的应用的数据流向难以理解。
        额外的，每次父级组件发生变更时，子组件中所有的 prop 都将会刷新为最新的值。这意味着你不应该在一个子组件内部改变 prop。如果你这样做了，Vue 会在浏览器的控制台中发出警告
    -->
    <input type="text" v-model="counter">

    <login :count="counter"></login>

</div>
</body>
</html>
<script src="js/vue.js"></script>
<script>


    const login = {
        //template:`<div><h3>用户登录--{{count}}</h3><button @click="incrmentCount">点我改变接收count</button></div>`,
        template:`<div><h3>用户登录--{{loginCount}}</h3><button @click="incrmentCount">点我改变接收count</button></div>`,
        data(){
            return {
                //这里的this，指该vue局部组件自身
                loginCount: this.count
            }
        },
        props:['count'],//相当于vue实例中的data属性，用来管理父组件的动态输入
        methods:{
            incrmentCount(){
                // console.log(this.count);
                //改变子组件中属性的值，这种写法会在浏览器控制台中报错，因为子组件的属性不能影响到父组件的属性
                // this.count++;
                this.loginCount++;
            }
        }
    };

    const app = new Vue({
        el: "#app",
        data: {
            msg: "组件之间数据传递",
            counter:0
        },
        components:{ //注册局部组件
            login,
        }
    });
</script>

